FROM java:8-alpine as builder
WORKDIR application
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} application.jar
RUN java -Djarmode=layertools -jar application.jar extract

FROM java:8-alpine
ENV TZ Asia/Shanghai
EXPOSE 8080
WORKDIR /application
# 这里复制的路径要跟 src/layers/layers.xml 中配置的 layerOrder 依赖层列表保持一致
COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader ./
COPY --from=builder application/snapshot-dependencies/ ./
COPY --from=builder application/internal-dependencies/ ./
COPY --from=builder application/project-dependencies/ ./
COPY --from=builder application/application/ ./
# 这个参数可以在构建镜像的时候指定
ARG active=dev
# 重新定义一个相同的环境变量，该参数可以在创建容器的时候指定覆盖，在启动应用的命令中使用该环境变量（启动命令中不能使用ARG变量，只能使用环境变量）
ENV active ${active}
# 添加 SpringBoot 的配置文件到路径中
COPY ./config/*.properties ./
COPY ./*.properties ./
# 只添加编译时指定环境的文件（防止打包时无关环境的数据泄露），在环境文件不存在时会报错
#COPY ./config/*-$active.properties ./
#COPY ./*-$active.properties ./
# 设置一个默认的 SpringBoot 激活环境
ENTRYPOINT java -Dspring.profiles.active=$active org.springframework.boot.loader.JarLauncher
